// 入口文件
import Vue from "vue"
// 路由
import VueRouter from "vue-router"
Vue.use(VueRouter)

// 导入 vue-resource 
import VueResource from 'vue-resource'
Vue.use(VueResource)

// 注册 vuex
import Vuex from 'vuex'
Vue.use(Vuex)
// 每次刚进入网站 肯定会调用 main.js 在刚调用的时候 , 先从本地存储中 , 把 购物车的数据读取出来 放到 store 中
let car = JSON.parse(localStorage.getItem('car') || "[]")

var store = new Vuex.Store({
  state: {
    car
  },
  mutations: {
    addToCar(state, goodsinfo) {
      let flag = true
      state.car.some(item => {
        if (item.id == goodsinfo.id) {
          item.count += parseInt(goodsinfo.count)
          flag = false
          return true
        }
      })
      // 如果最终 , 循环完毕 , 得到的 flag 还是true 就插进去
      if (flag) {
        state.car.unshift(goodsinfo)
      }

      localStorage.setItem('car', JSON.stringify(state.car))
    },
    changeCount(state, countObj) {
      state.car.some(item => {
        if (countObj.id == item.id) {
          item.count = parseInt(countObj.count)
          return true;
        }
      })
      localStorage.setItem('car', JSON.stringify(state.car))
    },
    deleteCar(state, id) {
      state.car.findIndex((item, index) => {
        if (item.id == id) {
          state.car.splice(index, 1)
          return true;
        }
      })
      localStorage.setItem("car", JSON.stringify(state.car))
    },
    changeSelected(state, id) {
      state.car.forEach(item => {
        if (item.id == id) {
          item.selected = !item.selected
        }
      })
      localStorage.setItem("car", JSON.stringify(state.car))
    }
  },
  getters: {
    getAllCount(state) {
      let c = 0
      state.car.forEach(item => {
        if (item.selected) {
          c += parseInt(item.count)
        }
      })
      return c
    },
    getCountById(state) {
      let countObj = {}
      state.car.forEach(item => {
        countObj[item.id] = item.count
      })
      return countObj
    },
    getMaxById(state) {
      let maxObj = {}
      state.car.forEach(item => {
        maxObj[item.id] = item.max
      })
      return maxObj
    },
    getSelectedObj(state) {
      let selectedObj = {}
      state.car.forEach(item => {
        selectedObj[item.id] = item.selected
      })
      return selectedObj
    },
    getAllPrice(state) {
      let price = 0
      state.car.forEach(item => {
        if (item.selected) {
          price += +item.count * +item.price
        }
      })
      return price
    }
  }
})

// 导入 格式化时间的插件
import moment from 'moment'
import 'moment/locale/zh-cn'
moment.locale('zh-cn')

// 配置请求的全局根路径
Vue.http.options.root = "http://www.liulongbin.top:3005"
// 全局设置 post 时候的 表单数据格式组织形式
Vue.http.options.emulateJSON = true

// 定义全局的过滤器 , 来过滤时间
Vue.filter('dateFormat', function (dataStr, pattern = "YYYY-MM-DD hh:mm:ss") {
  return moment(dataStr).format(pattern)
})

/** 
// 按需导入 Mint-UI 中的组件
import { Header, Swipe, SwipeItem, Button, Lazyload } from "mint-ui"
Vue.component(Header.name, Header)
Vue.component(Swipe.name, Swipe)
Vue.component(SwipeItem.name, SwipeItem)
Vue.component(Button.name, Button)
Vue.use(Lazyload)

*/
import MintUI from 'mint-ui'
Vue.use(MintUI)
import 'mint-ui/lib/style.css'


// 安装图片预览插件
import VuePreview from 'vue-preview'
Vue.use(VuePreview)


import './lib/MUI/dist/css/mui.min.css'
import './lib/MUI/dist/css/icons-extra.css'

import app from "./App.vue"
import router from "./router.js"

var vm = new Vue({
  el: "#app",
  render: c => c(app),
  router,
  store
})